home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / cddasub / cddasub.s < prev    next >
Text File  |  2000-05-19  |  11KB  |  680 lines

  1.     .include    IOCSCALL.MAC
  2.     .include    DOSCALL.MAC
  3.     .include    SCSICALL.MAC
  4.     .include    TNB.MAC
  5.  
  6. HEAD1 = '*CDD'
  7. HEAD2 = 'S001'
  8.  
  9. StartStatio:*******************常駐部ここから
  10. SS:
  11.     .dc.l    -1
  12.     .dc.w    $8000.w
  13.     .dc.l    STRR
  14.     .dc.l    ETYP
  15. dhead:    .dc.l    HEAD1,HEAD2
  16. STRA5:    .dc.l    $0.l
  17. STRR:    move.l    a5,STRA5
  18.     rts
  19. ETYP:
  20.     movem.l    d0/a5,-(a7)
  21.     movea.l    STRA5(pc),a5
  22.     bsr.s    ETYPSUB
  23.     move.b    d0,$3(a5)
  24.     lsr.w    #8,d0
  25.     move.b    d0,$4(a5)
  26.     movem.l    (a7)+,d0/a5
  27.     rts
  28. ETYPSUB:
  29.     tst.b    $2(a5)
  30.     beq.w    ETYP_KEEP
  31.     move.w    #$5003,d0    *err
  32.     rts
  33.  
  34.     *********************************************
  35. head:
  36.     .dc.l    HEAD1
  37.     .dc.l    HEAD2
  38.     .even
  39.  
  40. SCALL_JPT:
  41.     .dc.l    0
  42.  
  43. SCALL:    *=========================================
  44.     *    ($1F5)
  45.     *    SCSI IOCS
  46.     *
  47. SCALL__    = $1F5
  48. SCALL_    = $07D4.w
  49.  
  50.     *======= コマンドによって分岐
  51.     cmpi.w    #_S_SELECT,d1
  52.     beq    SEL_DISP
  53.     cmpi.w    #_S_SELECTA,d1
  54.     beq    SEL_DISP
  55.     cmpi.w    #_S_CMDOUT,d1
  56.     bne    SCALL_JMP
  57.  
  58.     *----- cmdout
  59.     move.w    SELID,d0        * SCSI-ID
  60.     cmp.w    ID+2(pc),d0        * IDは一致?
  61.     bne    SCALL_JMP
  62.  
  63.     cmpi.b    #$d8,(a1)        * SONY CDU-561 音声トラック読み込みコマンド?
  64.     bne    SCALL_JMP
  65.  
  66.     *------ Read CD-DA コマンドすげ替え ( SONY CDU-561 => General SCSI-3 )
  67.     move.l    a0,-(sp)
  68.     lea.l    CmdBuf(pc),a0
  69.     move.b    2(a1),2(a0)        * 開始ブロックアドレス
  70.     move.b    3(a1),3(a0)
  71.     move.b    4(a1),4(a0)
  72.     move.b    5(a1),5(a0)
  73.     clr.b    6(a0)            * 転送ブロック長
  74.     move.b    8(a1),7(a0)
  75.     move.b    9(a1),8(a0)
  76.     movea.l    (sp)+,a0
  77.  
  78.     move.l    a1,-(sp)        * 一時退避
  79.     lea.l    CmdBuf(pc),a1
  80.     bsr    SCALL_JMP        * CMDOUT!!
  81.     movea.l    (sp)+,a1        * 戻す
  82.     rts
  83.  
  84. SEL_DISP:
  85.     *----- selection
  86.     move.w    d4,SELID        * 記憶
  87.  
  88. SCALL_JMP::
  89.     move.l    SCALL_JPT(pc),-(sp)
  90.     rts
  91.  
  92.     *-------------------------*
  93.     .even
  94. __COM__:
  95.  
  96. SELID:
  97.     .dc.w    0    * S_SELECT* した ID
  98.  
  99. ID:
  100.     .dc.l    -1    * せつぞく
  101.  
  102. StaMod:
  103.     .dc.b    0
  104.  
  105.     .even
  106. CmdBuf:                    * Read CD-DA コマンドすげ替え用バッファ
  107.     .dc.b    $BE            ** General SCSI-3 CD読込コマンド
  108.     .dc.b    $00            ** Sector Type ??
  109.     .dc.b    $00,$00,$00,$00        ** 開始ブロックアドレス
  110.     .dc.b    $00,$00,$00        ** 転送ブロック長
  111.     .dc.b    $10            ** 読込モード指定
  112.     .dc.b    $00            ** サブチャンネル選択
  113.     .dc.b    $00            ** Control ??
  114.  
  115.     .even
  116.  
  117. __COM__S:
  118.  
  119.  
  120.  
  121. EndStatio:*******************常駐部ここまで
  122.  
  123.  
  124. MarkerChk:*----------------------------------------
  125.     *    a0 アドレス
  126.     *
  127.     *[戻り値] bne ちがう
  128.     *      beq あっている
  129. *    cmpa.l    #$F0000000,a0
  130. *    bcc    @f
  131.     cmp.l    #HEAD1,(a0)
  132.     bne    @f
  133.     cmp.l    #HEAD2,4(a0)
  134.     bne    @f
  135.     cmpa.l    a0,a0        *z=1
  136. @@:
  137.     rts
  138.  
  139.  
  140. InvChk:*----------------------------------------
  141.     *    a0.l==なら非常駐
  142.     *    a0.l!=なら常駐
  143.     movea.l    (a0),a0            *一つ前のポインタ
  144.     cmpa.l    #$F0000000,a0
  145.     bcc    IC1
  146.     cmp.l    #HEAD1,$0100+(head-SS)(a0)
  147.     bne    @f
  148.     cmp.l    #HEAD2,$0104+(head-SS)(a0)
  149.     bne    @f
  150.     adda.l    #$100,a0    **[SS]のポインタ
  151.     rts
  152. @@:                    **違う
  153.     tst.l    (a0)            *一つ前のポインタ
  154.     bne    InvChk            *0でない(上へ)
  155. IC1:    sub.l    a0,a0    *非常駐
  156.     rts
  157. DevChk:*----------------------------------------
  158.     *    a0.l==なら非常駐
  159.     *    a0.l!=なら常駐
  160.     movea.l    #$6800,a0
  161. DC1:    cmp.l    #'NUL ',(a0)
  162.     bne    @f
  163.     cmp.l    #'    ',4(a0)
  164.     bne    @f
  165.     bra    DC4
  166. @@:
  167.     addq.l    #2,a0
  168.     bra    DC1    *絶対あるはず。。
  169. DC4:
  170.     move.l    d0,-(sp)
  171.     suba.l    #(dhead-SS),a0    *リンクポインタ
  172. DC2:    movea.l    (a0),a0
  173.     move.l    a0,d0
  174.     bmi    DC3
  175.     cmp.l    #HEAD1,(dhead-SS)(a0)
  176.     bne    DC2
  177.     cmp.l    #HEAD2,(dhead-SS)+4(a0)
  178.     bne    DC2
  179.     cmp.l    #HEAD1,(head-SS)(a0)
  180.     bne    DC2
  181.     cmp.l    #HEAD2,(head-SS)+4(a0)
  182.     bne    DC2
  183.     *あった
  184.     move.l    (sp)+,d0
  185.     rts
  186. DC3:
  187.     move.l    (sp)+,d0
  188.     sub.l    a0,a0    *非常駐
  189.     rts
  190.  
  191.  
  192. AtoI:*----------------------------------------
  193.     *    a2 アドレス
  194.     *[戻り値] d0.l 数字
  195.     moveq    #0,d0
  196.     move.b    (a2),d2
  197.     cmpi.b    #'$',d2
  198.     jbeq    AtoHI
  199. @@:    move.b    (a2)+,d2
  200.     subi.b    #'0',d2
  201.     jbcs    AIr
  202.     cmpi.b    #9,d2
  203.     jbhi    AIr
  204.     andi.l    #$0000FF,d2
  205.     mulu    #10,d0
  206.     add.l    d2,d0
  207.     jbra    @b
  208. AIr:    subq    #1,a2
  209.     rts
  210. AtoHI:
  211.     *(Hex専用)
  212.     move.b    (a2)+,d2    *$ skip
  213. @@:    move.b    (a2)+,d2
  214.     subi.b    #'0',d2
  215.     jbcs    AHIL1
  216.     cmpi.b    #9,d2
  217.     jbhi    AHIL1
  218.     lsl.l    #4,d0
  219.     add.l    d2,d0
  220.     jbra    @b
  221. AHIL1:
  222.     ori.b    #$20,d2
  223.     subi.b    #'a'-'0',d2
  224.     jbcs    AHIL2
  225.     cmpi.b    #5,d2
  226.     jbhi    AHIL2
  227.     lsl.l    #4,d0
  228.     addi.l    #10,d0
  229.     add.l    d2,d0
  230.     jbra    @b
  231. AHIL2:    subq    #1,a2
  232.     rts
  233.  
  234.  
  235. clcf:    .dc.w    0
  236. cmdlinchk:*------------------------------------------------------------------
  237.     *    in a2 = 文字列
  238.     *    out d0.b    0   ; OK
  239.     *            -1  ; LINEERR
  240.     *            -2  ; COMDERR
  241.     *            -100; その他
  242.     *            'h' ; -?
  243.     *            'h' ; -H
  244.     *            'r' ; -R
  245.     *
  246.     clr.w    clcf
  247.     bra    sw
  248. cmdlinchkD:    ** DEVICE エントリ用
  249.     move.w    #-1,clcf
  250. sw:    move.b    (a2)+,d0
  251.     bne    1f
  252.     *======終わり?
  253.     tst.w    clcf
  254.     bne    @f
  255.     *======COMLINE からなので終わり
  256.     moveq    #0,d0
  257.     rts
  258. @@:    *====== DEVICE
  259.     move.b    (a2),d0
  260.     bne    sw
  261.     moveq    #0,d0    * 0が連続なので終わり
  262.     rts
  263. 1:
  264.     cmpi.b    #' ',d0
  265.     beq    sw
  266.     cmpi.b    #$09,d0        *tab
  267.     beq    sw
  268.     cmpi.b    #'-',d0
  269.     beq    swc
  270.     cmpi.b    #'/',d0
  271.     beq    swc
  272.     *======数字?
  273.     cmpi.b    #'$',d0
  274.     beq    @f
  275.     cmpi.b    #'0',d0
  276.     bcs    swe
  277.     cmpi.b    #'9'+1,d0
  278.     bcc    swe
  279. @@:    *======数字だ
  280.     subq.l    #1,a2
  281.     bsr    AtoI
  282.     move.l    d0,ID
  283.     bra    sw
  284.  
  285. swe:    *======コマンドラインが異常
  286.     moveq    #-1,d0
  287.     rts
  288. swc:
  289.     *======スイッチ判断
  290.     move.b    (a2)+,d0
  291.     beq    swe
  292.     cmpi.b    #'?',d0
  293.     bne    @f
  294.     moveq    #'h',d0
  295.     rts
  296. @@:
  297.     ori.b    #$20,d0    *小文字化!
  298.     cmpi.b    #'e',d0
  299.     beq    cl_eje
  300.     cmpi.b    #'n',d0
  301.     beq    cl_nnn
  302.     cmpi.b    #'r',d0
  303.     beq    clcrts
  304.     cmpi.b    #'h',d0
  305.     beq    clcrts
  306. @@:
  307.     moveq    #-2,d0
  308. clcrts:
  309.     rts
  310.  
  311. cl_nnn:
  312.     *----- /N
  313.     move.w    #-1,SWC_N
  314.     bra    sw
  315.  
  316. cl_eje:
  317.     *----- MEDIA を EJECT する!
  318.     move.l    ID(pc),d4
  319.     SCSI    _S_TESTUNIT
  320.     tst.l    d0
  321.     beq    @f
  322.     SCSI    _S_TESTUNIT
  323.     tst.l    d0
  324.     beq    @f
  325.     SCSI    _S_TESTUNIT
  326.     tst.l    d0
  327.     beq    @f
  328.     bra    1f
  329. @@:
  330.     moveq    #$00,d3
  331.     SCSI    _S_PAMEDIUM
  332.     lea.l    work(pc),a1
  333.     moveq    #18,d3
  334.     SCSI    _S_REQUEST
  335.     moveq    #$02,d3                *EJECT
  336.     bsr    scsi_startstop
  337.     tst.l    d0
  338.     beq    1f
  339.     SCSI    _S_STARTSTOP
  340. 1:
  341.     bra    sw
  342.  
  343.  
  344.  
  345. ETYP_KEEP:*----------------------------------------
  346.         **常駐!
  347.     movem.l    d1-d7/a0-a6,-(sp)
  348.  
  349.     suba.l    a3,a3
  350.  
  351.     Print    CRLF(pc)
  352.     Print    LR1(pc)
  353.  
  354.     movea.l    18(a5),a2
  355. @@:    move.b    (a2)+,d0        **ファイル名スキップ
  356.     bne    @b
  357.  
  358.     bsr    cmdlinchkD        *a2 に文字列もって bsr
  359.  
  360.     tst.b    d0
  361.     bne    @f
  362.  
  363.     move.l    ID(pc),d4
  364.     bpl    @f
  365.     Print    LRNI(pc)
  366.     bra    EK_ERR
  367. @@:
  368.     bsr    keepdisp
  369.     Print    LR2(pc)
  370.     move.b    #-1,StaMod
  371.     move.l    #EndStatio,$e(a5)
  372.     movem.l    (sp)+,d1-d7/a0-a6
  373.     moveq    #$0,d0
  374.     rts
  375. @@:
  376.     cmpi.b    #-100,d0
  377.     beq    EK_ERR
  378.     cmpi.b    #-1,d0
  379.     bne    @f
  380.     Print    LR6(pc)
  381.     bra    EK_ERR
  382. @@:
  383.     Print    LR7(pc)
  384. EK_ERR:
  385.     movem.l    (sp)+,d1-d7/a0-a6
  386.     move.w    #$700d,d0
  387.     rts
  388.  
  389.  
  390. lds_chk:*------------------------------------------------------------------
  391.     *    inquiry が返ってこなかったら -1
  392.     *    CD-ROM デバイスなら 0
  393.     *    それ以外は違う
  394. .if 0
  395.     movem.l    d1-d7/a0-a6,-(sp)
  396.     lea    work(pc),a1
  397.     moveq    #36,d3
  398.     SCSI    _S_INQUIRY
  399.     tst.l    d0
  400.     beq    @f
  401.     SCSI    _S_INQUIRY
  402.     tst.l    d0
  403.     beq    @f
  404.     SCSI    _S_INQUIRY
  405.     tst.l    d0
  406.     beq    @f
  407.     moveq    #-1,d0
  408.     bra    1f
  409. @@:
  410.     move.l    #'IODA',d0
  411.     cmp.l    8(a1),d0
  412.     bne    1f
  413.     move.l    #'LS-1',d0
  414.     cmp.l    16(a1),d0
  415.     bne    1f
  416.     moveq    #0,d0
  417. 1:    movem.l    (sp)+,d1-d7/a0-a6
  418. .else
  419.     moveq    #0,d0
  420. .endif
  421.     rts
  422.  
  423.  
  424. init:*------------------------------------------------------------------
  425.     lea    _usp(pc),sp
  426.     Print    LR1(pc)
  427.  
  428.     ** 常駐チェック **
  429.     suba.l    a1,a1
  430.     SUPER
  431.     movea.l    d0,a1
  432.  
  433.     moveq    #0,d1
  434.     bsr    InvChk
  435.     move.l    a0,d0
  436.     bne    @f
  437.     bsr    DevChk
  438. @@:    movea.l    a0,a3            *常駐先頭アドレス
  439.  
  440.     movea.l    SCALL_,a0
  441.     suba.l    #SCALL-head,a0
  442.     bsr    MarkerChk
  443.     bne    @f
  444.     bset    #0,d1
  445. @@:
  446.                     *d1に常駐状態
  447.     USER
  448.  
  449.     ** 常駐していたらそのデータを引用 **
  450.     move.l    a3,d0
  451.     beq    conl
  452.     suba.l    a1,a1
  453.     SUPER
  454.     movea.l    d0,a1
  455.  
  456.     lea    __COM__-SS(a3),a0
  457.     lea    __COM__,a6
  458.     move.l    #(__COM__S-__COM__)/2-1,d0
  459. @@:    move.w    (a0)+,(a6)+
  460.     dbra    d0,@b
  461.  
  462.     USER
  463. conl:
  464.     tst.b    (a2)+            *スキップ
  465.     bsr    cmdlinchk        *a2 に文字列もって bsr
  466.  
  467.     tst.b    d0
  468.     bne    1f
  469.     bra    keep
  470. 1:
  471.     cmpi.b    #-100,d0
  472.     bne    @f
  473.     DOS    _EXIT
  474. @@:
  475.     cmpi.b    #-1,d0
  476.     bne    @f
  477.     pea    LR6(pc)
  478.     bra    PE    *end
  479. @@:
  480.     cmpi.b    #'r',d0
  481.     beq    free
  482.     cmpi.b    #'h',d0
  483.     beq    help
  484.     pea    LR7(pc)            * -2 もここだ!
  485.     bra    PE    *end
  486. help:
  487.     pea    LRH(pc)
  488.     bra    PE    *end
  489.  
  490. keep:    ************************** 常駐させる
  491.     move.l    a3,d0
  492.     beq    keepL1
  493.         *既に常駐、設定変更
  494.     suba.l    a1,a1
  495.     SUPER
  496.     movea.l    d0,a1
  497.  
  498.     lea    __COM__-SS(a3),a0
  499.     lea    __COM__,a6
  500.     move.l    #(__COM__S-__COM__)/2-1,d0
  501. @@:    move.w    (a6)+,(a0)+
  502.     dbra    d0,@b
  503.  
  504.     USER
  505.  
  506.     move.w    MC(pc),d0
  507.     bne    @f
  508.     pea    LR5(pc)
  509.     bra    PE    *end
  510. @@:    pea    LR5_(pc)
  511.     bra    PE    *end
  512. keepL1:
  513.     **セット
  514.     move.l    ID(pc),d4
  515.     bpl    @f
  516.     pea    LRNI(pc)
  517.     bra    PE    *end
  518. @@:
  519.     suba.l    a1,a1
  520.     SUPER
  521.     movea.l    d0,a1
  522.      bsr    keepdisp
  523.     USER
  524.  
  525.     Print    LR2(pc)
  526.     Print    LRKP(pc)
  527.     clr.w    -(sp)
  528.     move.l    #EndStatio-StartStatio,-(sp)
  529.     DOS    _KEEPPR
  530.  
  531. keepdisp:***************
  532.     lea    SCALL_JPT(pc),a0
  533.     move.l    SCALL_,(a0)
  534.     lea    SCALL(pc),a0
  535.     move.l    a0,SCALL_
  536.  
  537.     move.l    ID(pc),d0
  538.     divu    #10,d0
  539.     addi.b    #'0',d0
  540.     move.b    d0,LR2_
  541.     swap    d0
  542.     addi.b    #'0',d0
  543.     move.b    d0,LR2_+1
  544.     rts
  545.  
  546. free:    *****************************常駐解除
  547.     move.l    a3,d0
  548.     bne    @f
  549.     pea    LR8(pc)        **非常駐
  550.     bra    PE    *end
  551. @@:
  552.     tst.b    StaMod
  553.     beq    @f
  554.     pea    LRCN(pc)    **CONFIG常駐
  555.     bra    PE    *end
  556. @@:
  557.     cmpi.w    #$01,d1
  558.     beq    @f
  559.     pea    LR4(pc)        **ベクタが占領
  560.     bra    PE    *end
  561. @@:
  562.     suba.l    a1,a1
  563.     SUPER
  564.     movea.l    d0,a1
  565.  
  566.     move.l    (SCALL_JPT-SS)(a3),SCALL_
  567.  
  568.     USER
  569.  
  570.     sub.l    #$00000F0,a3
  571.     move.l    a3,-(sp)
  572.     DOS    _MFREE
  573.     addq.l    #4,sp
  574.  
  575.     pea    LR3(pc)
  576. PE:    DOS    _PRINT
  577.     addq.l    #4,sp
  578.     DOS    _EXIT
  579.  
  580.  
  581. scsi_cmd:*-----------------------------------------------------
  582.     link a6,#-4
  583.     movem.l    d1-d4/a1,-(sp)
  584.     move.l    8(a6),d4
  585.     SCSI    _S_SELECT
  586.     tst.l    d0
  587.     beq    @f
  588.     moveq    #-4,d0
  589.     bra    2f
  590. @@:
  591.     movea.l    16(a6),a1
  592.     move.l    12(a6),d3
  593.     SCSI    _S_CMDOUT
  594.     tst.l    d0
  595.     beq    @f
  596.     moveq    #-3,d0
  597.     bra    2f
  598. @@:
  599.     lea    -1(a6),a1
  600.     SCSI    _S_STSIN
  601.     tst.l    d0
  602.     bne    1f
  603.     lea    -3(a6),a1
  604.     SCSI    _S_MSGIN
  605.     tst.l    d0
  606.     bne    @f
  607.     moveq.l    #0,d0
  608.     move.b    -3(a6),d0
  609.     asl.l    #8,d0
  610.     moveq.l    #0,d1
  611.     move.b    -1(a6),d1
  612.     add.l    d1,d0
  613.     bra    2f
  614. @@:
  615.     moveq    #-1,d0
  616.     bra    2f
  617. 1:
  618.     moveq    #-2,d0
  619. 2:
  620.     movem.l (sp)+,d1-d4/a1
  621.     unlk a6
  622.     rts
  623.  
  624. scsi_startstop:*-----------------------------------------
  625.     move.b    d3,Com+4
  626.     pea    Com(pc)        *com
  627.     move.l    #6,-(sp)    *com長さ
  628.     move.l    d4,-(sp)    *ID
  629.     bsr    scsi_cmd
  630.     lea    12(sp),sp
  631.     rts
  632. Com:
  633.     .dc.b 27,1,0,0,0,0
  634.     .even
  635.     *------------------------------------------*
  636.  
  637. SWC_N:
  638.     .dc.w    0
  639.  
  640. MC:    .dc.w    0    *モードをいじった
  641. LR2:    .dc.b    ' ID '
  642. LR2_:    .dc.b    '00 の Read CD-DA コマンドを SONY CDU-561 互換にしました。 ',$0d,$0a,0
  643. LRKP:    .dc.b    ' 常駐しました。',$0d,$0a,0
  644. LR3:    .dc.b    ' 常駐解除しました。',$0d,$0a,0
  645. LR4:    .dc.b    ' ベクタが占領されています。',$0d,$0a,0
  646. LR5:    .dc.b    ' 既に常駐しています。',$0d,$0a,0
  647. LR5_:    .dc.b    ' 設定を変更しました。    ',$0d,$0a,0
  648. LR6:    .dc.b    ' コマンドラインが異常です。',$0d,$0a,0
  649. LR7:    .dc.b    ' スイッチが異常です。',$0d,$0a,0
  650. LR8:    .dc.b    ' 常駐していません。',$0d,$0a,0
  651. LRNI:    .dc.b    ' ID を指定して下さい。',$0d,$0a,0
  652. LRNL:    .dc.b    ' LUN を指定して下さい。',$0d,$0a,0
  653. LRCN:    .dc.b    ' CONFIG.SYSで登録されています。',$0d,$0a
  654.     .dc.b    ' 常駐解除できません。',$0d,$0a,0
  655.     .even
  656. LRH:    .dc.b    $0d,$0a
  657.     .dc.b    '使用法:CDDASUB.x [ID] [switch] ',$0d,$0a
  658.     .dc.b    '    /E ・・・・・・・・ メディアをイジェクトします。',$0d,$0a
  659. *    .dc.b    '    /N ・・・・・・・・ デバイスチェックをしません。',$0d,$0a
  660.     .dc.b    '    /R ・・・・・・・・ 常駐解除します。',$0d,$0a
  661.     .dc.b    $0d,$0a
  662.     .dc.b    '指定 ID( General SCSI-3 仕様 CD-ROM )の Read CD-DA コマンドを',$0d,$0a
  663.     .dc.b    'SONY CDU-561 互換にします。',$0d,$0a
  664.     .dc.b    'CONFIG.SYS の DEVICE= でも登録可能です。',$0d,$0a
  665.     .dc.b    $0d,$0a
  666.     .dc.b    0
  667.     .even
  668. LR1:    .dc.b    'X68k CD-ROM SUB DRIVER Version 0.01 Copyright 2000 KIN',$0d,$0a
  669.     .dc.b    'Base : X68k DVD-RAM SUB DRIVER Version 0.02 (c)1998 TNB製作所'
  670. CRLF:    .dc.b    $0d,$0a,0
  671.     .even
  672.     .bss
  673. work:
  674.     .ds.b    256
  675.     .ds.b    1024
  676. _usp:
  677.  
  678.     .end    init
  679.  
  680.